/**
 * Copyright ©2003~2019年4月26日 szkingdom
 * @author raohj
 * @date 2019年4月26日
 * @file RThreadCallable.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年4月26日 由 raohj 新建文件
 */
package com.ccnu.demojava.concurrent.thread;

import java.util.concurrent.*;

/**
 * @author raohj
 * @date 2019年4月26日
 * @version 
 * @comment to add your comment
 */
public class RCallable {
    public static class RFutureRunnable implements Runnable{

		@Override
		public void run() {
			System.out.println("[" + Thread.currentThread().threadId() + "]" + "Runnable Hello world!");
		}
    }
    
    public static class CallableA implements Callable<String>{

		@Override
		public String call() throws Exception {
			System.out.println("CallableA start to sleep");
			Thread.sleep(10000);
			System.out.println("CallableA end sleep");
			return "success";
		}
    }
    /**
     * @author raohj
     * @date 2019年4月26日
     * @comment 测试Future获得执行的结果
     * @param 
     * @return 
     */
    public static void testCallable() {
    	ExecutorService es = Executors.newFixedThreadPool(10);
    	Future<String> frst = es.submit(new CallableA());
    	try {
			System.out.println("thread execute result:" + frst.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
    }
}
